import re

def get_info(author_info):
    
    # 清除空格
    author_info = author_info.replace(' ','').replace('　','')
    # 替换无法识别的字符
    author_info = author_info.replace('）',')').replace('（','(').replace('，',',').replace('；',';')

    # 根据地址的位置特点，将信息根据位置拆分出来。
    pattren_addr_1 = re.compile(r'(\d\).*?[\dA-Z\-]{4,10}[\u4e00-\u9fa5\s,a-zA-Z\-《》]*)')
    addr_list = pattren_addr_1.findall(author_info)

    # 获取信息所对应的作者ID
    pattern_info_id = re.compile(r'(\d\))')
    # 获取职称信息，以便和Id对应起来
    pattern_zhicheng = re.compile(r'\)[\u4e00-\u9fa5、]+')
    # 获取作者所在的单位信息，这里获取第一个单位
    pattern_school = re.compile(r'([,;]+?[\u4e00-\u9fa5《》_A-Za-z]+)')
    # 用于将不同地址的信息拆分开来，拆开之后，便于打包
    pattern_address = re.compile(r'[\dA-Z\-]{4,10}[0-9\u4e00-\u9fa5a-zA-Z《》\-]+')
    # 获取作者的邮编信息
    pattern_address_number = re.compile(r'[\dA-Z\-]+')
    # 获取作者所在单位的地址信息
    pattern_address_name = re.compile(r'[\u4e00-\u9fa5《》a-zA-Z]+')

    # 地址信息打包
    zhicheng_dict = {}
    school_dict = {}
    address_dict = {}
    code_dict = {}

    for addr in addr_list:
        # Id和职称有多个可以对应，所以需要多获取几次
        a = pattern_info_id.findall(addr)
        b = pattern_zhicheng.findall(addr)

        # 单位和地址在这里只有一个，所以获取一次就好了
        c = pattern_school.search(addr).group().replace(',','').replace(';','')
        d = pattern_address.search(addr).group()
        d_1 = pattern_address_number.search(d).group()
        d_2 = pattern_address_name.search(d).group()

        for i in range(len(a)):
            zhicheng_dict[a[i]] = b[i].replace(')','')
            school_dict[a[i]] = c
            address_dict[a[i]] = d_2
            code_dict[a[i]] = d_1

    return zhicheng_dict,school_dict,address_dict,code_dict

# 测试部分
# temp = get_info('1) 硕士、副教授,昆明理工大学一碳化工研究中心, 650093 昆明; 2) 讲师; 华东交通大学基础学院, 330013 南昌; 3) 教授、博士生导师,昆明理工大学材料与冶金工程学院, 650093昆明')
# temp = get_info('1) 博士生; 2) 教授、博士生导师,中国科学院地球化学研究所, 环境地球化学国家重点实验室, 550002贵阳; 3) 教授, Natinoal_Center_US_Geologi_cal_Survey_Rest_on_VA,20192 USA')
# temp = get_info('1) 博士、副教授; 2) 硕士生; 3) 讲师,东华理工学院应用化学系, 344000江西抚州; 4) 教授,拉夫堡大学化学系, LE113 TU 莱切斯特')
# temp = get_info('1)硕士生，湘潭大学化工学院，中国科学院过程工程研究所；2) 副教授，湘潭大学化工学院，411105湖南湘潭；3) 博士生；4) 博士、研究员、博士生导师(通讯作者)，中国科学院过程工程研究所多相复杂系统国家重点实验室，100190北京')
# print(temp)
